package com.ruoyi.produce.process.worksheet.domain;


import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;

import javax.validation.constraints.NotNull;
import java.sql.Timestamp;
import java.util.List;

/**
 * 加工单表
 *  produce_work_sheet
 * @author Drj 2021/6/28
 * 修改：lsy 2021.7.14
 */
public class ProduceWorkSheet extends BaseEntity {
    /**
     * 加工单编号
     */
    @NotNull(message = "加工单编号不能为空")
    @ApiModelProperty(value = "加工单编号", required = true)
    private String workSheetId;
    /**
     * 关联自产生产加工单编号
     */
    @NotNull(message = "关联自产生产加工单编号不能为空")
    @ApiModelProperty(value = "关联自产生产加工单编号", required = true)
    private String planSelfId;
    /**
     * 产品编号
     */
    @ApiModelProperty("产品编号")
    private String produceId;
    /**
     * 类别编号
     */
    @Excel(name = "类别编号")
    @ApiModelProperty("类别编号")
    private String baseCategoryId;
    /**
     * 类别名称
     */
    @Excel(name = "类别名称")
    @ApiModelProperty("类别名称")
    private String baseCategoryName;
    /**
     * 产品名称
     */
    @Excel(name = "产品名称")
    @ApiModelProperty("产品名称")
    private String produceName;
    /**
     * 计量单位编号
     */
    @Excel(name = "计量单位编号")
    @ApiModelProperty("计量单位编号")
    private String baseUnitId;
    /**
     * 计量单位名称
     */
    @Excel(name = "计量单位名称")
    @ApiModelProperty("计量单位名称")
    private String baseUnit;
    /**
     * 产品规格
     */
    @Excel(name = "产品规格")
    @ApiModelProperty("产品规格")
    private String produceSpecs;
    /**
     * 计划完成数量
     */
    @ApiModelProperty("计划完成数量")
    private double workSheetNumber;
    /**
     * 已完成数量
     */
    @ApiModelProperty("已完成数量")
    private double completedNumber;
    /**
     * 开始时间
     */
    @ApiModelProperty("开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private java.sql.Timestamp startTime;
    /**
     * 预计完成时间
     */
    @ApiModelProperty("预计完成时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private java.sql.Timestamp predictedFinishingTime;

    /**
     * 完成状态
     * 0-未完成、1-已完成
     */
    @ApiModelProperty(value = "完成状态")
    private String completionStatus;

    /**
     * 结束时间
     */
    @ApiModelProperty("结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private java.sql.Timestamp endTime;

    /**
     * 产线编号（自增）
     */
    @ApiModelProperty(value = "产线编号")
    private int productionLineId;

    /**
     * 产线名称
     */
    @ApiModelProperty("产线名称")
    private String productionLineName;
    /**
     * 序号
     */
    @ApiModelProperty("序号")
    private int allocationNum;
    /**
     * 分配时间
     */
    @ApiModelProperty("分配时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private java.sql.Timestamp allocationTime;
    /**
     * 创建人编号
     */
    @NotNull(message = "创建人编号不能为空")
    @ApiModelProperty(value = "创建人编号", required = true)
    private String createById;
    /**
     * 创建人名称
     */
    @ApiModelProperty("创建人名称")
    private String createByName;
    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private java.sql.Timestamp createTime;
    /**
     * 备注
     */
    @ApiModelProperty("备注")
    private String remark;
    /**
     * 是否审批
     */
    @ApiModelProperty("是否审批")
    private String approvalFlag;
    /**
     * 加工单对应产线分配记录
     */
    private List<ProduceWorkSheetAllocationRecord> produceWorkSheetAllocationRecords;
    /**
     * 工序移交记录
     */
    private List<ProduceProcedureTransferSheet>produceProcedureTransferSheets;
    /**
     * 所需工序
     */
    private List<WorkSheetProcedure> workSheetProcedures;

    public List<ProduceWorkSheetAllocationRecord> getProduceWorkSheetAllocationRecords() {
        return produceWorkSheetAllocationRecords;
    }

    public void setProduceWorkSheetAllocationRecords(List<ProduceWorkSheetAllocationRecord> produceWorkSheetAllocationRecords) {
        this.produceWorkSheetAllocationRecords = produceWorkSheetAllocationRecords;
    }


    public List<ProduceProcedureTransferSheet> getProduceProcedureTransferSheets() {
        return produceProcedureTransferSheets;
    }

    public void setProduceProcedureTransferSheets(List<ProduceProcedureTransferSheet> produceProcedureTransferSheets) {
        this.produceProcedureTransferSheets = produceProcedureTransferSheets;
    }

    public String getApprovalFlag() {
        return approvalFlag;
    }

    public void setApprovalFlag(String approvalFlag) {
        this.approvalFlag = approvalFlag;
    }

    public List<WorkSheetProcedure> getWorkSheetProcedures() {
        return workSheetProcedures;
    }

    public void setWorkSheetProcedures(List<WorkSheetProcedure> workSheetProcedures) {
        this.workSheetProcedures = workSheetProcedures;
    }

    @Override
    public String toString() {
        return "ProduceWorkSheet{" +
                "workSheetId='" + workSheetId + '\'' +
                ", planSelfId='" + planSelfId + '\'' +
                ", produceId='" + produceId + '\'' +
                ", baseCategoryId='" + baseCategoryId + '\'' +
                ", baseCategoryName='" + baseCategoryName + '\'' +
                ", produceName='" + produceName + '\'' +
                ", baseUnitId='" + baseUnitId + '\'' +
                ", baseUnit='" + baseUnit + '\'' +
                ", produceSpecs='" + produceSpecs + '\'' +
                ", workSheetNumber=" + workSheetNumber +
                ", completedNumber=" + completedNumber +
                ", startTime=" + startTime +
                ", predictedFinishingTime=" + predictedFinishingTime +
                ", endTime=" + endTime +
                ", allocationNum=" + allocationNum +
                ", allocationTime=" + allocationTime +
                ", createById='" + createById + '\'' +
                ", createByName='" + createByName + '\'' +
                ", createTime=" + createTime +
                ", remark='" + remark + '\'' +
                '}';
    }

    public String getWorkSheetId() {
        return workSheetId;
    }

    public void setWorkSheetId(String workSheetId) {
        this.workSheetId = workSheetId;
    }

    public String getCompletionStatus() {
        return completionStatus;
    }

    public void setCompletionStatus(String completionStatus) {
        this.completionStatus = completionStatus;
    }

    public String getPlanSelfId() {
        return planSelfId;
    }

    public void setPlanSelfId(String planSelfId) {
        this.planSelfId = planSelfId;
    }

    public String getProduceId() {
        return produceId;
    }

    public void setProduceId(String produceId) {
        this.produceId = produceId;
    }

    public String getBaseCategoryId() {
        return baseCategoryId;
    }

    public void setBaseCategoryId(String baseCategoryId) {
        this.baseCategoryId = baseCategoryId;
    }

    public String getBaseCategoryName() {
        return baseCategoryName;
    }

    public void setBaseCategoryName(String baseCategoryName) {
        this.baseCategoryName = baseCategoryName;
    }

    public String getProduceName() {
        return produceName;
    }

    public void setProduceName(String produceName) {
        this.produceName = produceName;
    }

    public String getBaseUnitId() {
        return baseUnitId;
    }

    public void setBaseUnitId(String baseUnitId) {
        this.baseUnitId = baseUnitId;
    }

    public String getBaseUnit() {
        return baseUnit;
    }

    public void setBaseUnit(String baseUnit) {
        this.baseUnit = baseUnit;
    }

    public String getProduceSpecs() {
        return produceSpecs;
    }

    public void setProduceSpecs(String produceSpecs) {
        this.produceSpecs = produceSpecs;
    }

    public double getWorkSheetNumber() {
        return workSheetNumber;
    }

    public void setWorkSheetNumber(double workSheetNumber) {
        this.workSheetNumber = workSheetNumber;
    }

    public double getCompletedNumber() {
        return completedNumber;
    }

    public void setCompletedNumber(double completedNumber) {
        this.completedNumber = completedNumber;
    }

    public Timestamp getStartTime() {
        return startTime;
    }

    public void setStartTime(Timestamp startTime) {
        this.startTime = startTime;
    }

    public Timestamp getPredictedFinishingTime() {
        return predictedFinishingTime;
    }

    public void setPredictedFinishingTime(Timestamp predictedFinishingTime) {
        this.predictedFinishingTime = predictedFinishingTime;
    }

    public Timestamp getEndTime() {
        return endTime;
    }

    public void setEndTime(Timestamp endTime) {
        this.endTime = endTime;
    }

    public int getProductionLineId() {
        return productionLineId;
    }

    public void setProductionLineId(int productionLineId) {
        this.productionLineId = productionLineId;
    }

    public String getProductionLineName() {
        return productionLineName;
    }

    public void setProductionLineName(String productionLineName) {
        this.productionLineName = productionLineName;
    }

    public int getAllocationNum() {
        return allocationNum;
    }

    public void setAllocationNum(int allocationNum) {
        this.allocationNum = allocationNum;
    }

    public Timestamp getAllocationTime() {
        return allocationTime;
    }

    public void setAllocationTime(Timestamp allocationTime) {
        this.allocationTime = allocationTime;
    }

    public String getCreateById() {
        return createById;
    }

    public void setCreateById(String createById) {
        this.createById = createById;
    }

    public String getCreateByName() {
        return createByName;
    }

    public void setCreateByName(String createByName) {
        this.createByName = createByName;
    }

    @Override
    public Timestamp getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Timestamp createTime) {
        this.createTime = createTime;
    }

    @Override
    public String getRemark() {
        return remark;
    }

    @Override
    public void setRemark(String remark) {
        this.remark = remark;
    }
}
